home *** CD-ROM | disk | FTP | other *** search
/ STraTOS 1997 April & May / STraTOS 1 - 1997 April & May.iso / CD01 / INTERNET / SITES / VOLANT / FASTPRIN.ZIP / SOURCES / SS+SPOOL.S < prev   
Encoding:
Text File  |  1996-08-26  |  3.8 KB  |  188 lines

  1.     OPT    O+
  2.  
  3. PRN EQU 10
  4.  
  5.     SECTION TEXT
  6.  
  7.     MOVE.L    SP,A5
  8.     MOVE.L    4(A5),A5
  9.     MOVE.L    $C(A5),D0
  10.     ADD.L    $14(A5),D0
  11.     ADD.L    $1C(A5),D0
  12.     ADD.L    #$100,D0
  13.     MOVE.L    D0,TAILLE_PRG
  14.  
  15.     PEA    ALL
  16.     MOVE.W    #9,-(SP)
  17.     TRAP    #1
  18.     ADDQ.L    #6,SP
  19.  
  20.     CLR.L    -(SP)
  21.     MOVE.W    #32,-(SP)
  22.     TRAP    #1
  23.     ADDQ.L    #6,SP
  24.     MOVE.L    D0,-(SP)
  25.  
  26.     BSR.S    INSTALL_PRINTER
  27.  
  28.     MOVE.W    #32,-(SP)
  29.     TRAP    #1
  30.     ADDQ.L    #6,SP
  31.  
  32.     CLR.W    -(SP)
  33.     MOVE.L    TAILLE_PRG,-(SP)
  34.     MOVE.W    #$31,-(SP)
  35.     TRAP    #1
  36.  
  37. *********************************
  38. *** DE TOURNEMENT DU COMPTEUR ***
  39. *********************************
  40. MY_TIMER:
  41.     TST.W    COMPTEUR2
  42.     BEQ.S    .CONT1
  43.     SUBQ.W    #1,COMPTEUR2
  44.     BNE.S    .CONT1
  45.     BSR    PRN_END
  46. .CONT1:    JMP    ([TIMER])
  47.  
  48. *******************************************************************************
  49.  
  50. *******************************
  51. *** INSTALLATION DU SPOOLER ***
  52. *******************************
  53.  
  54. INSTALL_PRINTER:
  55.     MOVE.W    #$2700,SR
  56.     MOVE.L    $114.W,TIMER
  57.     MOVE.L    #MY_TIMER,$114.W
  58.     MOVE.L    $B4.W,EX_TRAP
  59.     MOVE.L    #MY_TRAP,$B4.W
  60.     MOVE.W    #$2300,SR
  61.     RTS
  62.  
  63. MY_TRAP:    MOVE.L    USP,A0
  64.     BTST    #5,(SP)
  65.     BEQ.S    .USER
  66. .SUPER:    MOVE.L    SP,A0
  67.     ADDQ.W    #8,A0
  68. .USER:    *CMPI.L    #$00080000,(A0)
  69.     *BNE.S    .NEXT
  70.     *CLR.W    D0
  71.     *BTST    #0,$FFFFFA01.W
  72.     *BNE.S    .CONT
  73.     *NOT.W    D0
  74. .CONT:    *RTE
  75.  
  76. .NEXT:    CMPI.L    #$00030000,(A0)
  77.     BNE.S    .CONT1
  78.     BSR.S    FILE
  79.     RTE
  80.  
  81. .CONT1:    JMP    ([EX_TRAP])
  82.  
  83. FILE:    MOVE.B    5(A0),D0
  84.     MOVE.W    #PRN*200,COMPTEUR2
  85.     TST    INT_PRINTER
  86.     BNE.S    .CONT
  87.     BSR.S    PRN_INIT
  88. .CONT:    BSR    WAIT_PRINTER
  89.     BSR.S    PRN_RUN
  90.     RTS
  91.  
  92. **************************************
  93. *** INITIALISATION DE L'IMPRIMANTE ***
  94. **************************************
  95. PRN_INIT:    MOVE.L    A0,-(SP)
  96.     MOVE.L    D0,-(SP)
  97.     LEA    $FFFF8800.W,A0
  98. * ON PREND L'ETAT DU REG 14
  99.     MOVE.B    #14,(A0)
  100.     MOVE.B    (A0),EX_REG14
  101. * ON PREND L'ETAT DU REG 7
  102.     MOVE.B    #7,(A0)
  103.     MOVE.B    (A0),D0
  104.     MOVE.B    D0,EX_REG7
  105. * CENTRONIC EN SORTIE
  106.     OR.B    #128,D0
  107. * ON BALANCE LE NOUVEAU REGISTRE 7
  108.     MOVE.B    D0,2(A0)
  109. * FIN SOUS IT
  110.     MOVE.W    #-1,INT_PRINTER
  111.     MOVE.L    (SP)+,D0
  112.     MOVE.L    (SP)+,A0
  113.     RTS
  114.  
  115. ***************************************
  116. *** ON ENVOIE UNE  SÉRIE DE DONNÉES ***
  117. ***************************************
  118. PRN_RUN:    LEA    $FFFF8800.W,A0
  119. * ON BALANCE LA DONNÉE SUR LE PORT: REGISTRE 15
  120.     MOVE.B    #15,(A0)
  121.     MOVE.B    D0,2(A0)
  122. * ON PREND L'ETAT DU REG 14
  123.     MOVE.B    #14,(A0)
  124.     MOVE.B    (A0),D0
  125. * CENTRONIC EN SORTIE
  126.     AND.B    #223,D0
  127. * ON BALANCE LE NOUVEAU REGISTRE 14
  128.     REPT    2
  129.     MOVE.B    D0,2(A0)
  130.     ENDR
  131. * CENTRONIC EN SORTIE
  132.     OR.B    #32,D0
  133. * ON BALANCE LE NOUVEAU REGISTRE 14
  134.     MOVE.B    D0,2(A0)
  135.     RTS
  136.  
  137. ********************************
  138. *** ON RETABLIT L'IMPRIMANTE ***
  139. ********************************
  140. PRN_END:    MOVE.L    A0,-(SP)
  141.     LEA    $FFFF8800.W,A0
  142. * ON BALANCE L'ANCIEN REGISTRE 7
  143.     MOVE.B    #7,(A0)
  144.     MOVE.B    EX_REG7,2(A0)
  145. * ON BALANCE L'ANCIEN REGISTRE 14
  146.     MOVE.B    #14,(A0)
  147.     MOVE.B    EX_REG14,2(A0)
  148. * FIN
  149.     CLR.W    INT_PRINTER
  150.     MOVE.L    (SP)+,A0
  151.     RTS
  152.  
  153. **************************
  154. *** IMPRIMANTE PRETE ? ***
  155. **************************
  156. WAIT_PRINTER:    BTST    #0,$FFFFFA01.W
  157.     BNE.S    WAIT_PRINTER
  158.     RTS
  159.  
  160. ********************************************************************************
  161.      SECTION DATA
  162. ********************************************************************************
  163. ALL:    DC.B    27,"pSPEED PRINTER par Simon VOLANT (C)1995",27,"q",13,10,10,0
  164.     EVEN
  165. ********************************************************************************
  166.      SECTION BSS
  167. ********************************************************************************
  168.  
  169. TAILLE_PRG:    DS.L    1
  170.  
  171. *************************
  172. *** DATA SCREEN SAVER ***
  173. *************************
  174. * COMPTEUR EN 1/200 DE SECONDE
  175. COMPTEUR2:    DS.W    1
  176. * DETOURNEMENT DES VECTEURS
  177. TIMER:        DS.L    1
  178. ***************
  179. *** PRINTER ***
  180. ***************
  181. * SAUVEGARDE DES REGISTRE
  182. EX_REG7:    DS.B    1
  183. EX_REG14:    DS.B    1
  184. EX_TIMER:    DS.L    1
  185. EX_TRAP:    DS.L    1
  186. * L'INTERRUPTION EST-ELLE VALIDE
  187. INT_PRINTER:    DS.W    1
  188.     END